const md5 = require('md5');
const db_query = require('./DB');

let getToken = async function (userid, position) {
    return new Promise((res, rej) => {
        // 首先封装生成token方法登录成功后需要返回此token
        // 生成规则用户id + 当前时间戳 + 5位随机数然后进行nd5生成之后进行入库操作同时将此token返回到客户端
        let timestamp = new Date().getTime();
        // console.log(timestamp, 7);

        let token = md5(timestamp + userid + Math.random() * 100000)
        console.log(timestamp + userid + Math.random() * 100000, 8);
        // console.log(token, 9)
        let sql = "INSERT INTO `token` VALUES (null, '" + token + "', '" + timestamp + "', '" + userid + "', '" + position + "')";
        // console.log(sql, 233)
        db_query(sql)
        // console.log(res);
        res(token)
    })
}

let checkToken = async function (token, position) {
    //根据token进入数据库中查询 判断token是否存在 如果不存在返回报错
    let sql = "select * from token where token='" + token + "' and position='" + position + "'";
    let resource = await db_query(sql)
    console.log(resource,25)
    // 根据 查询结果的 当前时间戳-添加时间戳 
    let timestamp = new Date().getTime();
    let thisTime = timestamp - resource[0].addtime

    // console.log(thisTime, 28888)

    return new Promise((res, rej) => {
        // 判断是否token在30分钟内生成 如果是则继续访问 否则提示token过期重新登录 
        if (resource.length > 0) {
            if (30 * 60 * 1000 < thisTime) {
                res(false)
            } else {
                res(true)
            }

        } else {

            res(false)
        }
    })

}

module.exports = {
    getToken,
    checkToken
}